home *** CD-ROM | disk | FTP | other *** search
Wrap
// Class: CLASS_NAME //////////////////////////.cpp file///////////////////////////////////////////////////// #include "$TRUNCATE_EIGHT$CLASS_NAME$.h" SELECT_WHEN ATTRIBUTE_IS_STATIC [ATTRIBUTE_TYPE CLASS_NAME$::$ATTRIBUTE_NAME = ATTRIBUTE_INITIAL_VALUE$; //Static data member initialization] // Functions for class CLASS_NAME [ // Function: OPERATION_NAME // Purpose: OPERATION_COMMENT1 // Parameters: CPP_OPERATION_PARAMETERS // Comments: OPERATION_COMMENT2 OPERATION_RETURN_TYPE CLASS_NAME::OPERATION_NAME(CPP_OPERATION_PARAMETERS) CPP_OPERATION_CONSTANT { OPERATION_CODE } ] //Default constructor alternative to compiler provided default constructor //Association object data member pointers initialized to null association object NO_OUTPUT_BEGIN //Ensure correct initial values are entered in the Attribute Specification //Initialization list has members in the order declared //Enter the const attribute initializer list statement in CLASS_USER3, e.g. ,initialNumber(0) NO_OUTPUT_END CLASS_NAME::CLASS_NAME () SELECT_WHEN ATTRIBUTE_IS_NORMAL [NO_RETURN NO_REPEAT: ATTRIBUTE_NAME(ATTRIBUTE_INITIAL_VALUE),DELETE_LAST_SYMBOL] CLASS_USER3 { [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ] [AGGREGATION_MANY_NAME$Index = 0; //Index for array of 1:M aggregation part objects ] [ASSOCIATION_MANY_NAME$Index = 0; //Index for array of 1:M association objects ] //Initialization of array of 1:M association objects to null association objects [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ] } //Constructor with arguments //Update to argument list to initialize base class data members, //e.g. (int aNumber) : BaseClass (aNumber) //Enter the const attribute initializer list statement in CLASS_USER3, e.g. ,initialNumber(0) CLASS_NAME::CLASS_NAME ( SELECT_WHEN ATTRIBUTE_IS_NORMAL [NO_RETURN ATTRIBUTE_TYPE a$ATTRIBUTE_NAME,DELETE_LAST_SYMBOL] ) [NO_RETURN NO_REPEAT: BASE_CLASS$() ,DELETE_LAST_SYMBOL] CLASS_USER3 { SELECT_WHEN ATTRIBUTE_IS_NORMAL [ATTRIBUTE_NAME = a$ATTRIBUTE_NAME; //Initialization of attributes ] [AGGREGATION_MANY_NAME$Index = 0; //Index for array of 1:M aggregation part objects ] [ASSOCIATION_MANY_NAME$Index = 0; //Index for array of 1:M association objects ] [ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ] //Initialization of array of 1:M association objects to null association objects [for ( int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; ] } //Copy constructor alternative to compiler provided default copy constructor NO_OUTPUT_BEGIN //Copy alternatives for association objects: (1) initialize association object to nullAssociation Object //(2) Shallow copy to copy pointers of association objects (3) Deep copy to create new association objects //and copy values of association objects //Commented out code assigns 1:1 and 1:M association object data member pointers for shallow copy //Remove // if you desire to assign pointers ////Enter the const attribute initializer list statement in CLASS_USER3, e.g. ,initialNumber(0) NO_OUTPUT_END CLASS_NAME::CLASS_NAME (const CLASS_NAME$& a$CLASS_NAME ) [NO_RETURN NO_REPEAT: BASE_CLASS (a$CLASS_NAME),DELETE_LAST_SYMBOL] CLASS_USER3 {int i = 0; [ AGGREGATION_MANY_NAME$Index = 0; //Index for array of 1:M aggregation part objects ] [ ASSOCIATION_MANY_NAME$Index = 0; //Index for array of 1:M association objects ] SELECT_WHEN ATTRIBUTE_IS_NORMAL [ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;] [ AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;] [ ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ] [ //ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME; //Commented out shallow copy] [ for ( i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ] [ for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; //Initialization of pointers to null association object ] [ //Commented out shallow copy [ //for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ] } //Operator= Assignment Operator alternative to compiler provided operator= NO_OUTPUT_BEGIN //Assignment alternatives for association objects: (1) initialize association object to nullAssociation Object //(2) Shallow copy to copy pointers to association objects (3) Deep copy to copy value of association objects //Commented out code copies pointers for 1:1 and 1:M association object data members for shallow copy NO_OUTPUT_END CLASS_NAME& CLASS_NAME::operator= (const CLASS_NAME$& a$CLASS_NAME) { if (this == &a$CLASS_NAME) return *this; int i = 0; [ BASE_CLASS$::operator= (a$CLASS_NAME);] SELECT_WHEN ATTRIBUTE_IS_NORMAL [ ATTRIBUTE_NAME = a$CLASS_NAME$.$ATTRIBUTE_NAME;] [ AGGREGATION_ONE_NAME = a$CLASS_NAME$.$AGGREGATION_ONE_NAME;] [ ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; //Initialization to null association object ] [ // ASSOCIATION_ONE_NAME = a$CLASS_NAME$.$ASSOCIATION_ONE_NAME;//Commented out shallow copy] [ for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ] [ for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ; //Initialization of pointers to null association object ] [ //for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ] return *this; } //Operator== Equality Operator NO_OUTPUT_BEGIN //No compiler generated operator== generated //Comparison alternatives for association objects: (1) Do not compare association objects, (2) Do a shallow comparison //to compare pointers of association objects (3) Do a deep comparison to compare the values of association objects //Update for 1:M association object data members //Change C array to C++ collection for 1:M data members NO_OUTPUT_END int CLASS_NAME::operator== (const CLASS_NAME$& a$CLASS_NAME) const { return ( [ (BASE_CLASS$::operator== (a$CLASS_NAME)) &&] [ //Equality check for 1:1 association data members for shallow comparison //( ASSOCIATION_ONE_NAME == a$CLASS_NAME$.$ASSOCIATION_ONE_NAME) &&] //Equality check for 1:1 aggregation part data members [ ( AGGREGATION_ONE_NAME == a$CLASS_NAME$.$AGGREGATION_ONE_NAME) &&] //Equality check for 1:M aggregation parts //Update for the correct number of aggregation part objects [ ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&& ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&& ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&& ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&& ] //Equality check for 1:M association objects for shallow compare //Update for the correct number of associated objects [//( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL])&& //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[1 LITERAL_SYMBOL])&& //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[2 LITERAL_SYMBOL])&& //( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL] == a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[3 LITERAL_SYMBOL])&& ] //Equality check for attribute data members SELECT_WHEN ATTRIBUTE_IS_NORMAL [(ATTRIBUTE_NAME == a$CLASS_NAME$.$ATTRIBUTE_NAME) &DELETE_LAST_SYMBOL&DELETE_LAST_SYMBOL] ); } //Operator<< extraction for cout NO_OUTPUT_BEGIN //Change C array to C++ collection for 1:M data members NO_OUTPUT_END ostream& operator<< (ostream& os, const CLASS_NAME$& a$CLASS_NAME) { int i = 0; [ os << (BASE_CLASS &) a$CLASS_NAME;] os << "Object Attribute Values - Class CLASS_NAME" << endl; SELECT_WHEN ATTRIBUTE_IS_NORMAL [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;] SELECT_WHEN ATTRIBUTE_IS_CONSTANT [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;] SELECT_WHEN ATTRIBUTE_IS_STATIC [ os << "ATTRIBUTE_NAME: " << a$CLASS_NAME$.$ATTRIBUTE_NAME << endl;] [ os << " AGGREGATION_ONE_NAME$: " << a$CLASS_NAME$.$AGGREGATION_ONE_NAME << endl;] [ if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) os << " ASSOCIATION_ONE_NAME$: " << *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME << endl; [ for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) os << " AGGREGATION_MANY_NAME$: " << a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] << endl; ] [ for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] != &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS) os << " ASSOCIATION_MANY_NAME$: " << *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] << endl; } ] return os; } //Operator>> insertion for cin NO_OUTPUT_BEGIN //Change C array to C++ collection for 1:M data members NO_OUTPUT_END istream& operator>> (istream& is, CLASS_NAME$& a$CLASS_NAME) { int i = 0; [ is >> (BASE_CLASS &) a$CLASS_NAME;] cout << "\nEnter Object Attribute Values or 0 - Class CLASS_NAME"; SELECT_WHEN ATTRIBUTE_IS_NORMAL [ cout << "\nEnter ATTRIBUTE_NAME : " << endl; is >> a$CLASS_NAME$.$ATTRIBUTE_NAME;] [ is >> a$CLASS_NAME$.$AGGREGATION_ONE_NAME;] [ if (a$CLASS_NAME$.$ASSOCIATION_ONE_NAME != &a$CLASS_NAME$.null$ASSOCIATION_ONE_CLASS) is >> *$a$CLASS_NAME$.$ASSOCIATION_ONE_NAME ; ] [ for (i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) is >> a$CLASS_NAME$.$AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; ] [ for (i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) { if ( a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL]!= &a$CLASS_NAME$.null$ASSOCIATION_MANY_CLASS) is >> *a$CLASS_NAME$.$ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] ; } ] return is; } [ //Remove function for 1:1 association object data member //Warning delete ASSOCIATION_ONE_NAME object if dynamic object void CLASS_NAME::remove$ASSOCIATION_ONE_CLASS$() //throw (string) { string no$ASSOCIATION_ONE_CLASS$; if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) throw no$ASSOCIATION_ONE_CLASS$; else ASSOCIATION_ONE_NAME = &null$ASSOCIATION_ONE_CLASS; } ] [ //Get accessor function for 1:M association object data member NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator //Returns the first 1:M association object pointer in the array NO_OUTPUT_END const ASSOCIATION_MANY_CLASS$* CLASS_NAME::getFirst$ASSOCIATION_MANY_CLASS$() const //throw (string) { string ASSOCIATION_MANY_CLASS$CollectionEmpty; if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty; else return ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL]; } ] [ //Exists function for 1:1 association object data member int CLASS_NAME::exists$ASSOCIATION_ONE_CLASS$() const { if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) return 0; else return 1; } ] [ //Exists function with argument for 1:1 association object data member int CLASS_NAME::exists$ASSOCIATION_ONE_CLASS ($ASSOCIATION_ONE_CLASS$* const a$ASSOCIATION_ONE_CLASS$) const { if ( ASSOCIATION_ONE_NAME == &null$ASSOCIATION_ONE_CLASS ) return 0; else if ( *$ASSOCIATION_ONE_NAME == *a$ASSOCIATION_ONE_CLASS ) return 1; else return 0; } ] [ //Get accessor function for 1:M aggregation collection NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator //Returns pointer to the 1st element of the C array NO_OUTPUT_END const AGGREGATION_MANY_CLASS$* CLASS_NAME::get$AGGREGATION_MANY_CLASS$Collection () const { return AGGREGATION_MANY_NAME ; } ] [ //Set accessor function for 1:M aggregation collection NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator //Parameter is pointer to the first element of the C array NO_OUTPUT_END void CLASS_NAME::set$AGGREGATION_MANY_CLASS$Collection ($AGGREGATION_MANY_CLASS$* const a$AGGREGATION_MANY_CLASS$Collection) { for (int i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) AGGREGATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = a$AGGREGATION_MANY_CLASS$Collection LITERAL_SYMBOL[ i LITERAL_SYMBOL]; } ] [ //Exists function for 1:M aggregation part data member NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator NO_OUTPUT_END int CLASS_NAME::exists$AGGREGATION_MANY_CLASS (const AGGREGATION_MANY_CLASS$& a$AGGREGATION_MANY_CLASS$) const { for (int i = 0; i < maxNumberOf$AGGREGATION_MANY_CLASS$s; i++) { if ( AGGREGATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] == a$AGGREGATION_MANY_CLASS ) return 1; } return 0; } ] [ //Get accessor function for 1:M aggregation part data member NO_OUTPUT_BEGIN //Returns the first 1:M aggregation part in the array //Change C array to C++ collection class with iterator NO_OUTPUT_END const AGGREGATION_MANY_CLASS$& CLASS_NAME::getFirst$AGGREGATION_MANY_CLASS$() const { return AGGREGATION_MANY_NAME LITERAL_SYMBOL[ 0 LITERAL_SYMBOL] ; } ] [ //Get accessor function for 1:M association collection NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator //Returns pointer to 1st element of the C array NO_OUTPUT_END const ASSOCIATION_MANY_CLASS$* CLASS_NAME::get$ASSOCIATION_MANY_CLASS$Collection() const { return *$ASSOCIATION_MANY_NAME; } ] [ //Set accessor function for 1:M association collection NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator //Parameter is pointer to 1st element of the C array NO_OUTPUT_END void CLASS_NAME::set$ASSOCIATION_MANY_CLASS$Collection ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$Collection) { int i = 0; for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ; for ( i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ i LITERAL_SYMBOL] = &a$ASSOCIATION_MANY_CLASS$Collection LITERAL_SYMBOL[ i LITERAL_SYMBOL]; } ] [ //Add function for 1:M association object data member NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator NO_OUTPUT_END void CLASS_NAME::add$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$) //throw (string) { string ASSOCIATION_MANY_CLASS$CollectionFull; if ( ASSOCIATION_MANY_NAME$Index == maxNumberOf$ASSOCIATION_MANY_CLASS$s) throw ASSOCIATION_MANY_CLASS$CollectionFull; else { ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL] = a$ASSOCIATION_MANY_CLASS ; ASSOCIATION_MANY_NAME$Index++; } } ] [ //Remove function for 1:M association object data member //Warning delete ASSOCIATION_MANY_NAME object if dynamic object NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator NO_OUTPUT_END void CLASS_NAME::removeLast$ASSOCIATION_MANY_CLASS ( ) //throw (string) { string ASSOCIATION_MANY_CLASS$CollectionEmpty; if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty; else { ASSOCIATION_MANY_NAME$Index--; ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ASSOCIATION_MANY_NAME$Index LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS ; } } ] [ //Remove all function for 1:M association object data member //Warning delete ASSOCIATION_MANY_NAME object if dynamic object NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator NO_OUTPUT_END void CLASS_NAME::removeAll$ASSOCIATION_MANY_CLASS$s ( ) //throw (string) { string ASSOCIATION_MANY_CLASS$CollectionEmpty; if ( ASSOCIATION_MANY_NAME$Index == 0 ) throw ASSOCIATION_MANY_CLASS$CollectionEmpty; for (int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] = &null$ASSOCIATION_MANY_CLASS; } ] [ //Exists function for 1:M association object data member NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator NO_OUTPUT_END int CLASS_NAME::exists$ASSOCIATION_MANY_CLASS$() const { if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[0 LITERAL_SYMBOL] == &null$ASSOCIATION_MANY_CLASS ) return 0; else return 1; } ] [ //Exists function for 1:M association object data member NO_OUTPUT_BEGIN //Change C array to C++ collection class with iterator NO_OUTPUT_END int CLASS_NAME::exists$ASSOCIATION_MANY_CLASS ($ASSOCIATION_MANY_CLASS$* const a$ASSOCIATION_MANY_CLASS$) const { if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[ 0 LITERAL_SYMBOL] == &null$ASSOCIATION_MANY_CLASS ) return 0; for (int i = 0; i < maxNumberOf$ASSOCIATION_MANY_CLASS$s; i++) { if ( ASSOCIATION_MANY_NAME LITERAL_SYMBOL[i LITERAL_SYMBOL] == a$ASSOCIATION_MANY_CLASS ) return 1; } return 0; } ]